#ifndef GRAPHICS_H
#define GRAPHICS_H

#include "SDL.h"                                             // Include SDL
#include "SDL_opengl.h"                                         // Include OpenGL

#include <iostream>
#include <string>

#include "camera.h"                                                 // Include Camera Class
#include "lighting.h"                                               // Include Lighting Class
#include "map.h"                                                    // Include Map Class (Temp)
#include "shapes.h"                                                 // Include Shapes Class
#include "timer.h"                                                  // Include Timer Class

using namespace std;

class graphics: public camera, public lighting, public map, public shapes, public timer {
    private:
        const SDL_VideoInfo *videoInfo;
        SDL_Surface *screen;

        bool capFrames;
        int screenWidth;
        int screenHeight;
        int screenBBP;
        int videoFlags;
        int frame;
        int frameCap;

        bool initGL();
        bool initSDL();
        bool resizeWindow(int, int);
        void limitFPS();
        void resetScene();
        void translateScene();
        void rotateScene();
    public:
        graphics(int width=800, int height=600, int bpp=32);
        void drawScene();
        int currentFrame();
};

#endif